#pragma once

#include <MCF/Code/StdMCF.h>
#include <MCF/Code/WindowClass.h>

class MainWindowClass sealed : public MCF::WindowClass {
private:
	class _OpenGLThreadClass;
private:
	static const long CLIENT_SIZE[2];
	static const TCHAR WINDOW_NAME[];

	static ATOM _s_atomMainWndClass;
private:
	class _OpenGLThreadClass *_m_lpOpenGLThread;
public:
	MainWindowClass(int nCmdShow);
	~MainWindowClass();
private:
	virtual LRESULT _OnMessage(UINT uMsg, WPARAM wParam, LPARAM lParam);

	virtual bool _OnCreate(LPCREATESTRUCT lpCreateStruct);
	virtual void _OnDestroy();
	virtual void _OnClose();
	virtual void _OnTimer(UINT_PTR uTimerID, TIMERPROC lpfnTimerProc);

	void _RegisterMainWndClass();
};
